package com.fable.dal.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ProductQuery {
    /**
     * order by clause.
     */
    protected String orderByClause;

    /**
     * distinct
     */
    protected boolean distinct;

    /**
     * criteria fileRecordDOList
     */
    protected List<Criteria> oredCriteria;

    /**
     * page
     */
    protected Integer pageIndex;

    /**
     * page size
     */
    protected Integer pageSize;

    public ProductQuery() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public boolean isValid() {
        for (int i = 0; i < oredCriteria.size(); i++) {
            if (oredCriteria.get(i).isValid()) {
                return true;
            }
        }
        return false;
    }

    public void setPageOffset(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }

    public Integer getPageOffset() {
        return pageIndex;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }
        /**

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Long value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Long value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Long value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Long value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Long value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Long value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Long> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Long> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Long value1, Long value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Long value1, Long value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }


                public Criteria andGmtCreateIsNull() {
                    addCriterion("gmt_create is null");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateIsNotNull() {
                    addCriterion("gmt_create is not null");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateEqualTo(Date value) {
                    addCriterion("gmt_create =", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateNotEqualTo(Date value) {
                    addCriterion("gmt_create <>", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateGreaterThan(Date value) {
                    addCriterion("gmt_create >", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateGreaterThanOrEqualTo(Date value) {
                    addCriterion("gmt_create >=", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateLessThan(Date value) {
                    addCriterion("gmt_create <", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateLessThanOrEqualTo(Date value) {
                    addCriterion("gmt_create <=", value, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateIn(List<Date> values) {
                    addCriterion("gmt_create in", values, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateNotIn(List<Date> values) {
                    addCriterion("gmt_create not in", values, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateBetween(Date value1, Date value2) {
                    addCriterion("gmt_create between", value1, value2, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtCreateNotBetween(Date value1, Date value2) {
                    addCriterion("gmt_create not between", value1, value2, "gmtCreate");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedIsNull() {
                    addCriterion("gmt_modified is null");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedIsNotNull() {
                    addCriterion("gmt_modified is not null");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedEqualTo(Date value) {
                    addCriterion("gmt_modified =", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedNotEqualTo(Date value) {
                    addCriterion("gmt_modified <>", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedGreaterThan(Date value) {
                    addCriterion("gmt_modified >", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedGreaterThanOrEqualTo(Date value) {
                    addCriterion("gmt_modified >=", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedLessThan(Date value) {
                    addCriterion("gmt_modified <", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedLessThanOrEqualTo(Date value) {
                    addCriterion("gmt_modified <=", value, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedIn(List<Date> values) {
                    addCriterion("gmt_modified in", values, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedNotIn(List<Date> values) {
                    addCriterion("gmt_modified not in", values, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedBetween(Date value1, Date value2) {
                    addCriterion("gmt_modified between", value1, value2, "gmtModified");
                    return (Criteria) this;
                }

                public Criteria andGmtModifiedNotBetween(Date value1, Date value2) {
                    addCriterion("gmt_modified not between", value1, value2, "gmtModified");
                    return (Criteria) this;
                }
                 **/

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Integer value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Integer value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Integer value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Integer value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Integer value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLike(Integer value) {
            addCriterion("id like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotLike(Integer value) {
            addCriterion("id not like", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Integer> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Integer> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Integer value1, Integer value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Integer value1, Integer value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andProductTypeIsNull() {
            addCriterion("product_type is null");
            return (Criteria) this;
        }

        public Criteria andProductTypeIsNotNull() {
            addCriterion("product_type is not null");
            return (Criteria) this;
        }

        public Criteria andProductTypeEqualTo(String value) {
            addCriterion("product_type =", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeNotEqualTo(String value) {
            addCriterion("product_type <>", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeGreaterThan(String value) {
            addCriterion("product_type >", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeGreaterThanOrEqualTo(String value) {
            addCriterion("product_type >=", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeLessThan(String value) {
            addCriterion("product_type <", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeLessThanOrEqualTo(String value) {
            addCriterion("product_type <=", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeLike(String value) {
            addCriterion("product_type like", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeNotLike(String value) {
            addCriterion("product_type not like", value, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeIn(List<String> values) {
            addCriterion("product_type in", values, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeNotIn(List<String> values) {
            addCriterion("product_type not in", values, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeBetween(String value1, String value2) {
            addCriterion("product_type between", value1, value2, "productType");
            return (Criteria) this;
        }

        public Criteria andProductTypeNotBetween(String value1, String value2) {
            addCriterion("product_type not between", value1, value2, "productType");
            return (Criteria) this;
        }

        public Criteria andProductItemNoIsNull() {
            addCriterion("product_item_no is null");
            return (Criteria) this;
        }

        public Criteria andProductItemNoIsNotNull() {
            addCriterion("product_item_no is not null");
            return (Criteria) this;
        }

        public Criteria andProductItemNoEqualTo(String value) {
            addCriterion("product_item_no =", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoNotEqualTo(String value) {
            addCriterion("product_item_no <>", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoGreaterThan(String value) {
            addCriterion("product_item_no >", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoGreaterThanOrEqualTo(String value) {
            addCriterion("product_item_no >=", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoLessThan(String value) {
            addCriterion("product_item_no <", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoLessThanOrEqualTo(String value) {
            addCriterion("product_item_no <=", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoLike(String value) {
            addCriterion("product_item_no like", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoNotLike(String value) {
            addCriterion("product_item_no not like", value, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoIn(List<String> values) {
            addCriterion("product_item_no in", values, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoNotIn(List<String> values) {
            addCriterion("product_item_no not in", values, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoBetween(String value1, String value2) {
            addCriterion("product_item_no between", value1, value2, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductItemNoNotBetween(String value1, String value2) {
            addCriterion("product_item_no not between", value1, value2, "productItemNo");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNull() {
            addCriterion("product_name is null");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNotNull() {
            addCriterion("product_name is not null");
            return (Criteria) this;
        }

        public Criteria andProductNameEqualTo(String value) {
            addCriterion("product_name =", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotEqualTo(String value) {
            addCriterion("product_name <>", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThan(String value) {
            addCriterion("product_name >", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThanOrEqualTo(String value) {
            addCriterion("product_name >=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThan(String value) {
            addCriterion("product_name <", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThanOrEqualTo(String value) {
            addCriterion("product_name <=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLike(String value) {
            addCriterion("product_name like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotLike(String value) {
            addCriterion("product_name not like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameIn(List<String> values) {
            addCriterion("product_name in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotIn(List<String> values) {
            addCriterion("product_name not in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameBetween(String value1, String value2) {
            addCriterion("product_name between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotBetween(String value1, String value2) {
            addCriterion("product_name not between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsIsNull() {
            addCriterion("product_file_ids is null");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsIsNotNull() {
            addCriterion("product_file_ids is not null");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsEqualTo(String value) {
            addCriterion("product_file_ids =", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsNotEqualTo(String value) {
            addCriterion("product_file_ids <>", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsGreaterThan(String value) {
            addCriterion("product_file_ids >", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsGreaterThanOrEqualTo(String value) {
            addCriterion("product_file_ids >=", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsLessThan(String value) {
            addCriterion("product_file_ids <", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsLessThanOrEqualTo(String value) {
            addCriterion("product_file_ids <=", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsLike(String value) {
            addCriterion("product_file_ids like", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsNotLike(String value) {
            addCriterion("product_file_ids not like", value, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsIn(List<String> values) {
            addCriterion("product_file_ids in", values, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsNotIn(List<String> values) {
            addCriterion("product_file_ids not in", values, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsBetween(String value1, String value2) {
            addCriterion("product_file_ids between", value1, value2, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductFileIdsNotBetween(String value1, String value2) {
            addCriterion("product_file_ids not between", value1, value2, "productFileIds");
            return (Criteria) this;
        }

        public Criteria andProductPriceIsNull() {
            addCriterion("product_price is null");
            return (Criteria) this;
        }

        public Criteria andProductPriceIsNotNull() {
            addCriterion("product_price is not null");
            return (Criteria) this;
        }

        public Criteria andProductPriceEqualTo(Integer value) {
            addCriterion("product_price =", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotEqualTo(Integer value) {
            addCriterion("product_price <>", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceGreaterThan(Integer value) {
            addCriterion("product_price >", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_price >=", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceLessThan(Integer value) {
            addCriterion("product_price <", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceLessThanOrEqualTo(Integer value) {
            addCriterion("product_price <=", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceLike(Integer value) {
            addCriterion("product_price like", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotLike(Integer value) {
            addCriterion("product_price not like", value, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceIn(List<Integer> values) {
            addCriterion("product_price in", values, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotIn(List<Integer> values) {
            addCriterion("product_price not in", values, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceBetween(Integer value1, Integer value2) {
            addCriterion("product_price between", value1, value2, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductPriceNotBetween(Integer value1, Integer value2) {
            addCriterion("product_price not between", value1, value2, "productPrice");
            return (Criteria) this;
        }

        public Criteria andProductAttributeIsNull() {
            addCriterion("product_attribute is null");
            return (Criteria) this;
        }

        public Criteria andProductAttributeIsNotNull() {
            addCriterion("product_attribute is not null");
            return (Criteria) this;
        }

        public Criteria andProductAttributeEqualTo(String value) {
            addCriterion("product_attribute =", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeNotEqualTo(String value) {
            addCriterion("product_attribute <>", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeGreaterThan(String value) {
            addCriterion("product_attribute >", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeGreaterThanOrEqualTo(String value) {
            addCriterion("product_attribute >=", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeLessThan(String value) {
            addCriterion("product_attribute <", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeLessThanOrEqualTo(String value) {
            addCriterion("product_attribute <=", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeLike(String value) {
            addCriterion("product_attribute like", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeNotLike(String value) {
            addCriterion("product_attribute not like", value, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeIn(List<String> values) {
            addCriterion("product_attribute in", values, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeNotIn(List<String> values) {
            addCriterion("product_attribute not in", values, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeBetween(String value1, String value2) {
            addCriterion("product_attribute between", value1, value2, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductAttributeNotBetween(String value1, String value2) {
            addCriterion("product_attribute not between", value1, value2, "productAttribute");
            return (Criteria) this;
        }

        public Criteria andProductColorIsNull() {
            addCriterion("product_color is null");
            return (Criteria) this;
        }

        public Criteria andProductColorIsNotNull() {
            addCriterion("product_color is not null");
            return (Criteria) this;
        }

        public Criteria andProductColorEqualTo(String value) {
            addCriterion("product_color =", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotEqualTo(String value) {
            addCriterion("product_color <>", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorGreaterThan(String value) {
            addCriterion("product_color >", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorGreaterThanOrEqualTo(String value) {
            addCriterion("product_color >=", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLessThan(String value) {
            addCriterion("product_color <", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLessThanOrEqualTo(String value) {
            addCriterion("product_color <=", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLike(String value) {
            addCriterion("product_color like", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotLike(String value) {
            addCriterion("product_color not like", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorIn(List<String> values) {
            addCriterion("product_color in", values, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotIn(List<String> values) {
            addCriterion("product_color not in", values, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorBetween(String value1, String value2) {
            addCriterion("product_color between", value1, value2, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotBetween(String value1, String value2) {
            addCriterion("product_color not between", value1, value2, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductSizeIsNull() {
            addCriterion("product_size is null");
            return (Criteria) this;
        }

        public Criteria andProductSizeIsNotNull() {
            addCriterion("product_size is not null");
            return (Criteria) this;
        }

        public Criteria andProductSizeEqualTo(String value) {
            addCriterion("product_size =", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeNotEqualTo(String value) {
            addCriterion("product_size <>", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeGreaterThan(String value) {
            addCriterion("product_size >", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeGreaterThanOrEqualTo(String value) {
            addCriterion("product_size >=", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeLessThan(String value) {
            addCriterion("product_size <", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeLessThanOrEqualTo(String value) {
            addCriterion("product_size <=", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeLike(String value) {
            addCriterion("product_size like", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeNotLike(String value) {
            addCriterion("product_size not like", value, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeIn(List<String> values) {
            addCriterion("product_size in", values, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeNotIn(List<String> values) {
            addCriterion("product_size not in", values, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeBetween(String value1, String value2) {
            addCriterion("product_size between", value1, value2, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductSizeNotBetween(String value1, String value2) {
            addCriterion("product_size not between", value1, value2, "productSize");
            return (Criteria) this;
        }

        public Criteria andProductPackageIsNull() {
            addCriterion("product_package is null");
            return (Criteria) this;
        }

        public Criteria andProductPackageIsNotNull() {
            addCriterion("product_package is not null");
            return (Criteria) this;
        }

        public Criteria andProductPackageEqualTo(String value) {
            addCriterion("product_package =", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageNotEqualTo(String value) {
            addCriterion("product_package <>", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageGreaterThan(String value) {
            addCriterion("product_package >", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageGreaterThanOrEqualTo(String value) {
            addCriterion("product_package >=", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageLessThan(String value) {
            addCriterion("product_package <", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageLessThanOrEqualTo(String value) {
            addCriterion("product_package <=", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageLike(String value) {
            addCriterion("product_package like", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageNotLike(String value) {
            addCriterion("product_package not like", value, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageIn(List<String> values) {
            addCriterion("product_package in", values, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageNotIn(List<String> values) {
            addCriterion("product_package not in", values, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageBetween(String value1, String value2) {
            addCriterion("product_package between", value1, value2, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductPackageNotBetween(String value1, String value2) {
            addCriterion("product_package not between", value1, value2, "productPackage");
            return (Criteria) this;
        }

        public Criteria andProductDollarIsNull() {
            addCriterion("product_dollar is null");
            return (Criteria) this;
        }

        public Criteria andProductDollarIsNotNull() {
            addCriterion("product_dollar is not null");
            return (Criteria) this;
        }

        public Criteria andProductDollarEqualTo(Integer value) {
            addCriterion("product_dollar =", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarNotEqualTo(Integer value) {
            addCriterion("product_dollar <>", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarGreaterThan(Integer value) {
            addCriterion("product_dollar >", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_dollar >=", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarLessThan(Integer value) {
            addCriterion("product_dollar <", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarLessThanOrEqualTo(Integer value) {
            addCriterion("product_dollar <=", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarLike(Integer value) {
            addCriterion("product_dollar like", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarNotLike(Integer value) {
            addCriterion("product_dollar not like", value, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarIn(List<Integer> values) {
            addCriterion("product_dollar in", values, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarNotIn(List<Integer> values) {
            addCriterion("product_dollar not in", values, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarBetween(Integer value1, Integer value2) {
            addCriterion("product_dollar between", value1, value2, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductDollarNotBetween(Integer value1, Integer value2) {
            addCriterion("product_dollar not between", value1, value2, "productDollar");
            return (Criteria) this;
        }

        public Criteria andProductWeightIsNull() {
            addCriterion("product_weight is null");
            return (Criteria) this;
        }

        public Criteria andProductWeightIsNotNull() {
            addCriterion("product_weight is not null");
            return (Criteria) this;
        }

        public Criteria andProductWeightEqualTo(String value) {
            addCriterion("product_weight =", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotEqualTo(String value) {
            addCriterion("product_weight <>", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightGreaterThan(String value) {
            addCriterion("product_weight >", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightGreaterThanOrEqualTo(String value) {
            addCriterion("product_weight >=", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLessThan(String value) {
            addCriterion("product_weight <", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLessThanOrEqualTo(String value) {
            addCriterion("product_weight <=", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLike(String value) {
            addCriterion("product_weight like", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotLike(String value) {
            addCriterion("product_weight not like", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightIn(List<String> values) {
            addCriterion("product_weight in", values, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotIn(List<String> values) {
            addCriterion("product_weight not in", values, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightBetween(String value1, String value2) {
            addCriterion("product_weight between", value1, value2, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotBetween(String value1, String value2) {
            addCriterion("product_weight not between", value1, value2, "productWeight");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("status is null");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("status is not null");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(Integer value) {
            addCriterion("status =", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(Integer value) {
            addCriterion("status <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(Integer value) {
            addCriterion("status >", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("status >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(Integer value) {
            addCriterion("status <", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(Integer value) {
            addCriterion("status <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLike(Integer value) {
            addCriterion("status like", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotLike(Integer value) {
            addCriterion("status not like", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<Integer> values) {
            addCriterion("status in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<Integer> values) {
            addCriterion("status not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(Integer value1, Integer value2) {
            addCriterion("status between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("status not between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andGmtCreateIsNull() {
            addCriterion("gmt_create is null");
            return (Criteria) this;
        }

        public Criteria andGmtCreateIsNotNull() {
            addCriterion("gmt_create is not null");
            return (Criteria) this;
        }

        public Criteria andGmtCreateEqualTo(Date value) {
            addCriterion("gmt_create =", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateNotEqualTo(Date value) {
            addCriterion("gmt_create <>", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateGreaterThan(Date value) {
            addCriterion("gmt_create >", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateGreaterThanOrEqualTo(Date value) {
            addCriterion("gmt_create >=", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateLessThan(Date value) {
            addCriterion("gmt_create <", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateLessThanOrEqualTo(Date value) {
            addCriterion("gmt_create <=", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateLike(Date value) {
            addCriterion("gmt_create like", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateNotLike(Date value) {
            addCriterion("gmt_create not like", value, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateIn(List<Date> values) {
            addCriterion("gmt_create in", values, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateNotIn(List<Date> values) {
            addCriterion("gmt_create not in", values, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateBetween(Date value1, Date value2) {
            addCriterion("gmt_create between", value1, value2, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtCreateNotBetween(Date value1, Date value2) {
            addCriterion("gmt_create not between", value1, value2, "gmtCreate");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedIsNull() {
            addCriterion("gmt_modified is null");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedIsNotNull() {
            addCriterion("gmt_modified is not null");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedEqualTo(Date value) {
            addCriterion("gmt_modified =", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedNotEqualTo(Date value) {
            addCriterion("gmt_modified <>", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedGreaterThan(Date value) {
            addCriterion("gmt_modified >", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedGreaterThanOrEqualTo(Date value) {
            addCriterion("gmt_modified >=", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedLessThan(Date value) {
            addCriterion("gmt_modified <", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedLessThanOrEqualTo(Date value) {
            addCriterion("gmt_modified <=", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedLike(Date value) {
            addCriterion("gmt_modified like", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedNotLike(Date value) {
            addCriterion("gmt_modified not like", value, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedIn(List<Date> values) {
            addCriterion("gmt_modified in", values, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedNotIn(List<Date> values) {
            addCriterion("gmt_modified not in", values, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedBetween(Date value1, Date value2) {
            addCriterion("gmt_modified between", value1, value2, "gmtModified");
            return (Criteria) this;
        }

        public Criteria andGmtModifiedNotBetween(Date value1, Date value2) {
            addCriterion("gmt_modified not between", value1, value2, "gmtModified");
            return (Criteria) this;
        }

    }

    /**
     * This class corresponds to the database table product
     */
    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    /**
     * This class corresponds to the database table product
     */
    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}